package com.github.gdxmap.core;

import android.util.Log;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.backends.android.AndroidInput;
import com.badlogic.gdx.input.GestureDetector;
import com.badlogic.gdx.math.Vector2;

/**
 * Created by free on 2016/12/6 0006.
 */
public class MapInputProcessor implements InputProcessor,GestureDetector.GestureListener {
    protected GdxMap gdxMap;

    public MapInputProcessor(GdxMap gdxMap){
        this.gdxMap=gdxMap;
    }

    @Override
    public boolean keyDown(int keycode) {
        return false;
    }

    @Override
    public boolean keyUp(int keycode) {
        return false;
    }

    @Override
    public boolean keyTyped(char character) {
        return false;
    }

    /**
     *  当有一个手指碰到触摸屏或者鼠标点击的时候调用这个方法。
     *  返回触摸点对应指针的XY坐标，指针的索引号，或者鼠标点击的按键（对触摸屏来说一般来说是左键）。
     * @param screenX
     * @param screenY
     * @param pointer
     * @param button
     * @return
     */
    @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        return false;
    }

    /**
     * 当有一个手指离开屏幕或者鼠标键松开时会调用该方法。
     * 返回最后接触的XY坐标，索引号，鼠标键。
     * @param screenX
     * @param screenY
     * @param pointer
     * @param button
     * @return
     */
    @Override
    public boolean touchUp(int screenX, int screenY, int pointer, int button) {
        return false;
    }

    /**
     * 当手指在屏幕上滑动，或者鼠标按键按下然后移动时会调用该方法。
     * 返回坐标和指针索引。但是在滑动的时候有多个按键按下的时候，这些按键不会被返回。
     * 你可以使用Gdx.input.isButtonPressed()来检查一个特定的按键状态。
     * @param screenX
     * @param screenY
     * @param pointer
     * @return
     */
    @Override
    public boolean touchDragged(int screenX, int screenY, int pointer) {
        return true;
    }

    @Override
    public boolean mouseMoved(int screenX, int screenY) {
        return false;
    }

    @Override
    public boolean scrolled(int amount) {
        return false;
    }

    @Override
    public boolean touchDown(float x, float y, int pointer, int button) {
        return false;
    }

    @Override
    public boolean tap(float x, float y, int count, int button) {
        return false;
    }

    @Override
    public boolean longPress(float x, float y) {
        return false;
    }

    @Override
    public boolean fling(float velocityX, float velocityY, int button) {
        return false;
    }

    /**
     * 触摸移动地图
     * @param x
     * @param y
     * @param deltaX
     * @param deltaY
     * @return
     */
    @Override
    public boolean pan(float x, float y, float deltaX, float deltaY) {
        gdxMap.moveBy(-deltaX,deltaY);

        return false;
    }

    @Override
    public boolean panStop(float x, float y, int pointer, int button) {
        return false;
    }

    @Override
    public boolean zoom(float initialDistance, float distance) {
        return false;
    }

    @Override
    public boolean pinch(Vector2 initialPointer1, Vector2 initialPointer2, Vector2 pointer1, Vector2 pointer2) {
        return false;
    }

    @Override
    public void pinchStop() {

    }
}
